#ifndef __PROJECT_HH__
#define __PROJECT_HH__
#include "subproject-base.hh"
// #include "../algorithm/includes/basis-function.hh"
#include <vector>

class ProjectBase {
public:
  ProjectBase();
  virtual ~ProjectBase();
  virtual void set_project_signature()=0;
  virtual void set_common_parameters(int subproj)=0;
  virtual void load_subprojects()=0;
  void add_subproject(SubprojectBase* subproject);
  SubprojectBase* get_subproject(int index);
  int get_subproject_number();
  std::string project_signature;
  // BasisFunction *basis;
private:
  std::vector<SubprojectBase*> subprojects;
};
enum PROJ_SIGNATURE {constantAdvection_1D_YASP,
		     soundWave_1D_YASP,
		     euler_1D_YASP,
		     mhd_1D_YASP,
		     fv_2D_YASP,
		     fv_3D_YASP,
		     dg_1D_YASP
};
ProjectBase* create_project(PROJ_SIGNATURE signature);

#endif  // __PROJECT_HH__
